const { Readable } = require('stream')

// 模拟底层数据
let source = ['aa','bb','cc']

// 自定义类
class MyReadable extends Readable {
  constructor(){
    super()
    this.source = source
  }
  //重写_read
  _read(){
    // 读取数据，无数据时赋null
    let data = this.source.shift() || null
    this.push(data)
  }
}

// 实例化
let myRs = new MyReadable(source)

// myRs.on('readable', ()=>{
//   let data = null
//   while( (data = myRs.read(2)) !== null ){
//     console.log(data.toString())
//   }
// })
// // aa
// // bb
// // cc

myRs.on('data', (chunk)=>{
  console.log(chunk.toString())
})
// aa
// bb
// cc
